package com.shi.entity.po;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.shi.entity.vo.MenuVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Collections;
import java.util.Date;
import java.util.List;

/**
 * (Menu)实体类
 *
 * @author makejava
 * @since 2024-05-14 15:23:11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("menu")
public class Menu implements Serializable {
    private static final long serialVersionUID = 152541058556876524L;
    /**
     * 菜单id
     */
    @TableId(type = IdType.AUTO)
    private Integer menuId;
    /**
     * 父菜单id
     */
    private Integer pid;
    /**
     * 排序字段
     */
    private Integer orderBy;

    /**
     * 菜单代码
     */
    private String code;
    /**
     * 前端访问路径
     */
    private String path;
    /**
     * 前端路由name
     */
    private String name;
    /**
     * 重定向路径
     */
    private String redirect;
    /**
     * 组件存放位置
     */
    private String componentPath;
    /**
     * 路由名称
     */
    private String label;
    /**
     * 是否在侧边栏菜单显示（0：显示，1：隐藏）
     */
    private Integer isHidden;
    /**
     * 阿里 icon-conf 图标代码
     */
    private String icon;
    /**
     * 菜单类型（M：菜单，B：按钮）
     */
    private String menuType;

    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 备注
     */
    private String remark;
    /**
     * 逻辑删除（0：未删，1：已删）
     */
    @TableLogic(value = "0",delval = "1")
    private Integer isDeleted;

    public static List<MenuVO> menu2MenuVOList(List<Menu> menus) {
        if (menus == null || menus.isEmpty()) {
            return Collections.emptyList();
        }
        return menus.stream().map(menu -> BeanUtil.toBean(menu, MenuVO.class)).toList();
    }

}

